First version with basic functionality