public function store(
        $username,
        $should_propagate_password = null,
        $password = null,
        $account_id = null,
        $account_identifier = null,
        $account_username = null,
        $expires_at = null,
        $disabled = null
    )
    {
        $fields = [];
        //@todo validate params, throw exception when they are missing
        $fields['username'] = $username;
        if (!is_null($should_propagate_password)) $fields['should_propagate_password'] = $should_propagate_password;
        if (!is_null($password)) $fields['password'] = $password;
        if (!is_null($account_id)) $fields['account_id'] = $account_id;
        if (!is_null($account_identifier)) $fields['account_identifier'] = $account_identifier;
        if (!is_null($account_username)) $fields['account_username'] = $account_username;
        if (!is_null($expires_at)) $fields['expires_at'] = strftime('%F %R', $expires_at);
        if (!is_null($disabled)) $fields['disabled'] = $disabled;

        return $this->_post($fields);
    }