move basic part to a separate gem