almost fixed vertical implementation