singin should be functional