More generic input
Change to member functions