further implementation - looking a bit uniform now